Opening
and Closing Files
An
application must open an AVI file before reading or writing. To open an AVI
file, use the AVIFileOpen
function. AVIFileOpen returns the address of an AVI file interface that
contains the handle of the open file and increments the reference count of the
file.
The AVIFileOpen
function supports the OF flags used with the OpenFile function. If an application
writes to an existing file, it must include the OF_WRITE flag in AVIFileOpen.
Similarly, if your application creates and writes to a new file, you must
include the OF_CREATE and OF_WRITE flags in AVIFileOpen.
When you open
a file using AVIFileOpen, you can use a default file handler or you can
specify a custom file handler to read and write to the file and its data
streams. In either case, AVIFile searches the registry for the correct file
handler to use. You must ensure custom file handlers are in the registry before
an application can access them.
You can
increment the reference count of a file by using the AVIFileAddRef function. For example, you
might want to do this when passing a handle of the file interface to another
application, or when you want to keep a file open while using a function that
would normally close the file.
You can close
a file by using the AVIFileRelease function. The AVIFileRelease function
decrements the reference count of an AVI file, saves changes made to the file,
and when the reference count reaches zero, closes the file. Your applications
should balance the reference count by including a call to AVIFileRelease
for each use of AVIFileOpen
and AVIFileAddRef.
Note An application
can open a file with one or more program threads. However, for the best
possible performance, only one thread should access the file at any one time.